package gerenciaDados.cln.cdp;

import gerenciaDados.cln.cgt.PI.DB;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Arrays;

public class Medicao {

	Date dtMedicao;
	double[] dadosSensores;
	String localizacao;
	String observacoes;
	double[] procImagem;
	double altura;
	double[] dadosCamera;
	String tipoLampada;
	String potenciaLampada;
	String dataaquisicao;
	String dataimportacao;
	
	
	public String getLocalizacao() {
		return localizacao;
	}

	public Medicao() {
		dtMedicao = null;
		dadosSensores = new double[13];
		localizacao = "";
		observacoes = "";
		procImagem = new double[16];
		dadosCamera = new double[11];
		tipoLampada = "";
		potenciaLampada = "";
	}
	
	public static ArrayList<Medicao> getMedicoesTreinamento() {
		ArrayList<Medicao> medicoesTreinamento = new ArrayList<Medicao>();
		Connection con = DB.conecta();
		try {
			Statement stt = con.createStatement();
			ResultSet rs = stt.executeQuery("select " +
					" e.sfh5711," + //1
					" e.sfh3400," + //2
					" e.tsl261r," + //3
					" e.sfh3410," + //4
					" e.sfh2430," + //5
					" e.bp104fas," + //6
					" e.tsl13s," + //7
					" e.tsl2569t_c," + //8
					" e.tsl2569t_ir," + //9
					" e.tcs3414_r," + //10
					" e.tcs3414_g," + //11
					" e.tcs3414_b," + //12
					" e.tcs3414_c," + //13
					" e.i1," + //14
					" e.i2," + //15
					" e.i3," + //16
					" e.i4," + //17
					" e.i5," + //18
					" e.i6," + //19
					" e.i7," + //20
					" e.probmax," + //21
					" e.energia," + //22
					" e.entropia," + //23
					" e.contraste," + //24
					" e.homogeneidade," + //25
					" e.correlacao," + //26
					" e.redlevel," + //27
					" e.greenlevel," + //28
					" e.bluelevel," + //29
					" e.aperture," + //30
					" e.shutterspeed," + //31
					" e.iso," + //32
					" e.focusdistanceupper," + //33
					" e.focusdistancelower," + //34
					" e.focallength," + //35
					" e.lightvalue," + //36
					" e.redbalance," + //37
					" e.bluebalance," + //38
					" e.measuredev," + //39
					" e.measuredev2, " + //40
					" e.posicao, " + //41
					" e.observacoes, " + //42
					" tl.descricao, " + //43
					" p.descricao " + //44
					" from exemplo e "+
					"inner join tipolampada tl on (e.cd_tipolampada = tl.cd_tipolampada) "+
					"inner join potencia p on (e.cd_potencia = p.cd_potencia) "+
					"where (finalidade = 'TRN');");					
			while(rs.next()) {
				Medicao m = new Medicao();
				int i;
				for(i=1; i<14; i++) {
					m.dadosSensores[i-1] = rs.getInt(i);
				}
				for(i=14; i<30; i++) {
					m.procImagem[i-14] = rs.getDouble(i);
				}
				for(i=30; i<41; i++) {
					m.dadosCamera[i-30] = rs.getDouble(i);
				}
				m.localizacao = rs.getString(41).trim();
				m.observacoes = rs.getString(42).trim();				
				m.tipoLampada = rs.getString(43).trim();
				m.potenciaLampada = rs.getString(44).trim();
				medicoesTreinamento.add(m);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return medicoesTreinamento;
	}
	
	public static ArrayList<Medicao> getMedicoesAuditoria() {
		ArrayList<Medicao> medicoesAuditoria = new ArrayList<Medicao>();
		Connection con = DB.conecta();
		try {
			Statement stt = con.createStatement();
			ResultSet rs = stt.executeQuery("select " +
					" e.sfh5711," + //1
					" e.sfh3400," + //2
					" e.tsl261r," + //3
					" e.sfh3410," + //4
					" e.sfh2430," + //5
					" e.bp104fas," + //6
					" e.tsl13s," + //7
					" e.tsl2569t_c," + //8
					" e.tsl2569t_ir," + //9
					" e.tcs3414_r," + //10
					" e.tcs3414_g," + //11
					" e.tcs3414_b," + //12
					" e.tcs3414_c," + //13
					" e.i1," + //14
					" e.i2," + //15
					" e.i3," + //16
					" e.i4," + //17
					" e.i5," + //18
					" e.i6," + //19
					" e.i7," + //20
					" e.probmax," + //21
					" e.energia," + //22
					" e.entropia," + //23
					" e.contraste," + //24
					" e.homogeneidade," + //25
					" e.correlacao," + //26
					" e.redlevel," + //27
					" e.greenlevel," + //28
					" e.bluelevel," + //29
					" e.aperture," + //30
					" e.shutterspeed," + //31
					" e.iso," + //32
					" e.focusdistanceupper," + //33
					" e.focusdistancelower," + //34
					" e.focallength," + //35
					" e.lightvalue," + //36
					" e.redbalance," + //37
					" e.bluebalance," + //38
					" e.measuredev," + //39
					" e.measuredev2, " + //40
					" e.posicao, " + //41
					" e.observacoes, " + //42
					" tl.descricao, " + //43
					" p.descricao, " + //44
					" e.data, " + //45
					" li.data " + //46
					" from exemplo e "+
					"inner join tipolampada tl on (e.cd_tipolampada = tl.cd_tipolampada) "+
					"inner join potencia p on (e.cd_potencia = p.cd_potencia) "+
					"inner join logimportacao li on (e.cd_logimportacao = li.cd_logimportacao) "+
					"where (finalidade = 'ADT');");
								
		
			while(rs.next()) {
				Medicao m = new Medicao();
				int i;
				for(i=1; i<14; i++) {
					m.dadosSensores[i-1] = rs.getInt(i);
				}
				for(i=14; i<30; i++) {
					m.procImagem[i-14] = rs.getDouble(i);
				}
				for(i=30; i<41; i++) {
					m.dadosCamera[i-30] = rs.getDouble(i);
				}
				m.localizacao = rs.getString(41).trim();
				m.observacoes = rs.getString(42).trim();				
				m.tipoLampada = rs.getString(43).trim();
				m.potenciaLampada = rs.getString(44).trim();
				m.dataaquisicao = rs.getTimestamp(45).toString();
				m.dataimportacao = rs.getTimestamp(46).toString();
				medicoesAuditoria.add(m);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return medicoesAuditoria;
	}
	
	public double[] getDadosSensores() {
		return dadosSensores;
	}

	public double[] getProcImagem() {
		return procImagem;
	}

	public double[] getDadosCamera() {
		return dadosCamera;
	}

	public String getTipoLampada() {
		return tipoLampada;
	}

	public String getPotenciaLampada() {
		return potenciaLampada;
	}
	
	public String getDataAquisicao(){
		return dataaquisicao;
	}
	
	public String getDataImportacao(){
		return dataimportacao;
	}

	@Override
	public String toString() {
		return "Medicao [dadosSensores=" + Arrays.toString(dadosSensores)
				+ ", localizacao=" + localizacao + ", observacoes="
				+ observacoes + ", procImagem=" + Arrays.toString(procImagem)
				+ ", dadosCamera=" + Arrays.toString(dadosCamera)
				+ ", tipoLampada=" + tipoLampada + ", potenciaLampada="
				+ potenciaLampada + "]";
	}

	public static void main(String[] args) {
		//System.out.println(Medicao.getMedicoesTreinamento().get(0).toString());
	}
}
